package com.cskaoyan.javase.oop2._1extends._10final._3variable._3static;

/**
 * final修饰静态成员变量表示一个静态的"常量"
 * 在类的全局仅有一份，所以final修饰静态成员变量，也称之为"全局常量"。
 * 它是一个真正意义上的常量，不会因为创建对象而更改，实际开发中的常量多使用它。
 *
 * 语法：
 * [访问权限修饰符] static final 数据类型 变量名;
 * 和final修饰成员变量一样，全局常量的取值也不能依赖于默认值
 * 必须 （在类加载过程中）明确一个值。这样静态成员变量的赋值方式还有（除去默认初始化）：
 *      1.显式赋值
 *      2.静态代码块
 * 以上两种赋值方式，必须且只能选择其一。
 * 其他的赋值方式，比如在创建对象过程中的赋值方式，都是不可以的
 *
 * @since 14:33
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        System.out.println(A.NUM);
        // A.NUM = 1000;
    }
}

class A {
    public static final int NUM = 100;
    final static int NUM2;

    static {
        NUM2 = 200;
    }
}
